package com.szy.system.task;

import java.util.ArrayList;
import java.util.List;

/**
 * @author : zhenyun.su
 * @comment : 任务基本操作
 * 比如：获取任务列表，添加任务，删除任务，获取任务，判断任务是否存在
 * 具体任务处理具体由子类完成
 * @since : 2020-9-3
 */

@Deprecated
public abstract class SzyTaskBaseService<T> {
    private List<SzyTask<T>> taskList = new ArrayList<>();

    public List<SzyTask<T>> findAll() {
        return taskList;
    }

    public void addTask(SzyTask task) {
        taskList.add(task);
    }
    public void addTask(String key, T value) {
        SzyTask task = SzyTask.of(key, value, "", "");
        taskList.add(task);
    }

    public void addTask(String key, T value, String type, String extValue) {
        SzyTask task = SzyTask.of(key, value, type, extValue);
        taskList.add(task);
    }

    public SzyTask<T> getByKey(String key) {
        for (SzyTask<T> task : taskList) {
            if (key.equalsIgnoreCase(task.getKey())) {
                return task;
            }
        }
        return null;
    }
    public T objectByKey(String key) {
        for (SzyTask<T> task : taskList) {
            if (key.equalsIgnoreCase(task.getKey())) {
                return task.getValue();
            }
        }
        return null;
    }

    public Boolean existTask(String key) {
        return getByKey(key) != null;
    }

    public void removeTask(String key) {
        SzyTask task = getByKey(key);
        if (task != null) {
            this.taskList.remove(task);
        }
    }
    public void removeTask(SzyTask task) {
        if (task != null) {
            this.taskList.remove(task);
        }
    }

    /**
     * @comment : 处理任务列表，由子类来完成具体内容
     * 超过szy.security.loginFailure.unLockUserExpired 分钟
     */
    public abstract void handleTaskList();

}

